CFGPT:基于大型语言模型的中文财务助理,包括一个数据集CFData、一个金融LLM CFLLM和一个部署框架CFAPP
“CFGPT: Chinese Financial Assistant with Large Language Model”
论文地址:https://arxiv.org/pdf/2309.10654.pdf
Github地址:https://github.com/TongjiFinLab/CFGPT1
摘要
本文介绍了一个名为CFGPT的中文金融生成预训练转换框架,包括一个数据集CFData、一个金融LLM CFLLM和一个部署框架CFAPP。CFData包括一个预训练数据集和一个监督微调数据集,CFLLM基于InternLM-7B进行训练,CFAPP则是基于LLMs并增加了额外的模块以确保在实际应用中的多方面功能。
简介
近年来,预训练语言模型(PLMs)在工业和研究领域引起了广泛关注,成为自然语言处理和交互式人工智能的关键。2022年公开发布的GPT-3.5和GPT-4是大型语言模型(LLMs),在阅读理解、开放式问题回答和代码生成等任务中展示了无与伦比的性能。然而,金融文本的复杂性带来了挑战。为了更好地理解复杂的金融语言和概念,开发了几个专门的金融大型语言模型(FinLLMs),包括FinGPT、PIXIU和BloombergGPT。
一些早期的中文金融大语言模型的尝试,如BBT-FinT5、XuanYuan2.0和Cornucopia等。虽然金融领域的LLM已经取得了重大成就,但在中国金融领域的应用还不够充分。
CFGPT包括预训练和监督微调的数据集,金融LLM和应用框架。CFData数据集包含了大量的中文金融数据和分析,以及一小部分通用文本。预训练数据集包含了584M个文档和141B个标记,包括公告、研究报告、社交媒体内容、金融新闻文章和维基百科条目。监督微调数据集针对六个不同的金融任务进行了定制,包括情感分析、事件检测、报告摘要、主题分解、问题回答和股票走势预测。框架支持多种LLM作为基础模型。旨在通过持续的预训练和监督微调来增强其在中国金融任务中的零样本和少样本性能。
CFAPP框架是为满足中国金融领域的需求而设计的,采用大型语言模型和其他模块,支持多种输入格式和输出格式,确保响应的准确性和精度。该框架具有适应性和多功能性,是中国金融领域的先驱解决方案。
相关工作
金融数据集
金融数据集主要分为文本数据集和结构化数据集。本文关注的是金融领域的文本数据集,如新闻和社交媒体文本,可用于预测股票价格和运动。研究者们通过提取潜在特征来增强交易系统的训练。
LLM的流行使得研究重心从模型中心转向数据中心,强调了金融领域中文本数据的重要性。一些模型如BloombergGPT、PIXIU和FinGPT等,整合了通用和金融文本数据,用于金融应用的监督微调。BBT-Fin则专注于中国金融领域,推出了BBT-Fin语料库。常见的金融领域的语言模型,包括FinBERT、XuanYuan 2.0和Cornucopia。FinBERT使用了大约30亿个来自企业报告、研究报告、社交媒体和金融新闻的标记。XuanYuan 2.0使用了380个标记的混合调优数据集,包括通用领域和金融领域的数据。Cornucopia则强调监督微调,构建了一个包含2600万个指令对的数据集,涵盖保险、投资、股票、基金、贷款和信用卡等领域。此外,CFData语料库还提供了584亿个文档和1410亿个标记的预训练数据,以及150万个指令对和15亿个标记的显式设计的监督微调数据。
金融语言模型
在金融领域整合LLMs之前,预训练语言模型主要集中在使用金融文本进行持续预训练。通过在英文金融新闻和通信中对BERT进行预训练,Araci和Yang等人在金融情感分析任务中取得了显著的成果。在中文方面,Mengzi-fin和BBT-FinT5通过类似任务的训练,在多个金融任务中取得了改进。
GPT模型的出现引起了对领域特定语言模型(FinLLMs)的高度关注。BloombergGPT是一款拥有500亿参数的先驱型FinLLM,其性能指标在零样本和少样本情况下表现出色。后续的模型FinGPT和PIXIU更深入地进行了监督微调,其结果超过了BloombergGPT和其他通用LLMs。在中国金融领域,XuanYuan2.0和Cornucopia等模型在领域特定数据集上进行监督微调后,展示了在通用和金融问答方面的实力。
金融评估基准
FLUE是一个金融评估基准,由Shah等人于2022年提出,包括情感分析、新闻标题分类、命名实体识别、结构边界检测和问答等五个任务。Xie等人认为FLUE需要更全面的金融应用。2023年,FLARE和BBT-CFLEB成为金融领域的两个基准测试,分别包括股票预测和六个任务。最近,FinEval成为专门为金融领域知识设计的基准测试,包括4661个多项选择题。
数据集
概览
CFData是一个用于预训练和监督微调的数据集,包括大量的中文金融数据和分析,以及少量的通用文本。它包括六个金融任务,如情感分析、事件检测、报告摘要、主题分解、问答和股票走势预测。CFData提供了丰富的金融领域文本信息,可以让FinLLM从不同的来源学习。详细统计数据见表1。
本预训练数据集包含591亿个文档和1930亿个标记,包括六个子数据集,其中CFData-CP占6.24%,包含3.9万份公司招股说明书。数据集包含了来自不同来源的各种类型的数据,包括公司公告、研究报告、金融新闻、社交媒体和维基百科内容。总共有13亿个令牌,其中社交媒体占了最大比例。详细信息请参见第3.2节和图1。
数据集包含六个金融任务,共1.6万条指令对和15亿个标记。这些任务包括情感分析、报告摘要、事件检测、主题分解、问答和股票预测。详细信息请参见第3.3节。
预训练数据
我们收集了额外的中国金融文件以便进行预训练。这个数据集包括企业招股说明书、企业公告、研究报告、社交媒体内容、金融新闻文章和维基百科内容。我们使用基于代理的分布式爬虫通过CFData2的API从公共网页获取这些文件。此外,我们按照(Zeng et al. 2021)和(Lu et al. 2023)的类似预处理步骤进行处理。CFData是一个数据集,旨在帮助LLMs更好地理解中国金融概念和语言的复杂性。与BloombergGPT相比,CFData包含更多长文本的金融文件,特别是公司招股说明书、公司公告和研究报告。
CFData-CP是一个由公司准备的关键法律文件,为潜在投资者提供有关财务状况、业务模式、策略、风险、管理团队、法律诉讼、监管合规性和资金利用的详细信息。该子数据集包括39.1万份公司招股说明书,共计8.79百万个标记。这些文件经过PDFMiner软件包的处理,去除了所有数字、表格和乱码字符,并过滤掉长度小于10,000个字符的文件。
CFData-CA公司公告是上市公司发布的官方财务报表,旨在向公众提供信息。包括6.19万份企业公告,总共有17.3亿个标记。数据集分为两类:定期公告和不定期公告。数据集的构建过程包括从上海证券交易所和深圳证券交易所网站爬取企业招股说明书,并使用PDFMiner将PDF文档转换为原始文本格式。
CFData-RR研究报告是由投资机构发布的专门关注宏观经济、行业、领域和股票的报告。这些报告不仅包含分析师的独特观点和见解,还提供了分析步骤,反映了金融领域分析师的逻辑。为了构建这个子数据集,我们从东方财富网站爬取了2016年至2022年的研究报告,最终得到了683,294份PDF格式的文档。我们使用PDFMiner将PDF文档转换为原始文本格式,通过正则表达式删除文档中的所有图表和乱码字符,并过滤掉长度小于2,000的文档。数据集包含39.2万份研究报告,共计35.3亿个标记。
CFData-FN是一个高质量的金融新闻子数据集,包含了2018年至2022年间从中国知名金融网站爬取的121,273,632篇新闻文章。该数据集涵盖了股市更新、公司收益报告、并购、经济数据发布、央行决策、政府政策、汇率、利率等金融领域的内容。通过正则表达式提取新闻文章,并使用局部敏感哈希算法过滤重复新闻,最终得到了82.4万篇新闻文章,共计26.3亿个标记。
CFData-SM数据集包含了社交媒体平台上关于金融市场的帖子。数据集来源于雪球、股吧和微博等平台,时间跨度为2018年至2022年。数据集共包含了20838204735条帖子,但需要注意的是,社交媒体平台上的帖子可能存在偏见和错误信息。因此,在数据过滤过程中,需要采取一些措施来确保数据的可靠性。
CFData-Wiki是一个在线百科全书,包含多个领域的多个主题。为了保持FinLLMs的泛化能力,我们将中文维基百科的数据整合到预训练中。我们对数据进行了多次预处理,最终得到了包含255,000个文档和1.37亿个标记的数据集。
有监督微调数据
我们的数据集是从真实世界的金融应用中衍生出来的,包括金融情绪分析、金融事件检测、财务报告摘要、金融主题分解、金融问题回答和股票走势预测等六个不同任务的开源数据。
CFData-SA构建了一个针对中国市场的金融情感分析的监督微调数据集,包括社交媒体帖子和研究报告内容。这个数据集的构建有助于提高金融领域情感分析的准确性。
第一种方法是随机选择6万个长度超过100个字符的社交媒体帖子,并使用GPT-4 API标记每个帖子的情感。第二种方法是随机选择6万份长度在2000到3000个字符之间的研究报告,并提取每份报告的内容和投资评级。使用了两种方法来构建中国金融市场的情感数据集,包括基于金融新闻的情感分析和基于财务报告的情感分析。这个数据集包含了120,000个项目和118,000,000个标记。
CFData-ED是一个金融事件检测任务,旨在通过树形结构的事件方案对金融文档进行分类,帮助人们在金融市场上做出明智的投资决策。CFData-ED数据集包含490万个实例和461亿个标记,是基于CN-Fin数据集构建的。该任务被视为多标签分类,共涵盖98个事件类别。
CFData-TD。在金融应用中,将一个问题分解成多个简单或具体的问题有助于回答原始问题,这对于检索增强生成(RAG)聊天机器人来说也很重要。将主题逻辑分解为不同的方面是至关重要的。构建支持此类分析的数据集。
为了避免繁重的手工劳动,我们建议利用研究报告来实现这一目标。研究报告的标题通常包含感兴趣的主题,而其大纲则反映了研究该主题所使用的分析方法。为了在金融主题分解的背景下增强FinLLM,我们建议使用每个研究报告的标题作为源主题,使用每个研究报告的大纲作为分解的目标,构建数据集。这个数据集将使模型学习如何将金融主题分解为其组成要素。通过从CFData-RR中过滤掉没有大纲或标题的研究报告,我们总共得到了379,000份研究报告,我们随机选择了369,000份研究报告来构建CFData-TD数据集,并留下10,000份实例供将来使用。然后,我们将每个研究报告的标题和大纲进行拆分,构建这个数据集。最后,我们构建了包含369,000个项目和总计1.87亿个标记的CFData-TD任务。
CFData-RS报告摘要在金融应用中具有重要意义。为了提高金融报告摘要的质量,我们利用研究报告本身提供监督,构建了CFData-RS数据集。该数据集包含369,000个项目,总共有7.65亿个标记。我们利用研究报告的内容作为源,利用结论和摘要作为目标,从而捕捉研究报告的关键信息和主要观点,生成简洁而有信息量的摘要。
CFData-QA。金融问答任务中的语言限制,提出将两个英文金融问答数据集翻译成中文,以增强CFGPT模型在金融问答中的表现。这两个数据集分别是FinQA和ConvFinQA,合并后构成了CFData-QA任务,包含12,000个问题和答案对,总共有6百万个标记。
CFData-SP数据集结合社交媒体、财经新闻和历史股价,预测未来股价走势。首先选择相关的财经新闻,然后结合社交媒体和历史股价进行预测。这对于量化投资具有重要的实际应用价值。本文介绍了一个股票价格预测的任务,使用了CSISmallcap 500指数中每只股票过去五天的历史收盘价和未来一天的收盘价变化率,将其作为分类问题,预测股票价格未来一天是上涨、下跌还是持平。
本研究使用了三个分类标准来构建股票价格变化数据集,分别是上涨、下跌和持有。数据集包含212,000个样本,共175个标记。
模型和训练
CFLLM模型基于InternLM-chat-7b模型构建,通过两个阶段的微调过程,增强了模型在金融领域的理解和推理能力,使其更符合实际金融应用。第一阶段是持续预训练,第二阶段是有监督微调。
继续预训练
本文介绍了使用InternLM-chat-7b作为基础模型,通过预训练数据进行fine-tune得到CFLLM-pt-7B模型的过程。在训练过程中,采用了AdamW优化器、512的batch size、1e-5的weight decay和1×10 −5的学习率。在前1000步使用线性warmup和余弦衰减学习率调度器。最终得到的模型可以处理长度超过1024的序列。
有监督微调
第二阶段使用预训练模型作为基础模型,结合QLoRA和Moss-03-sft数据集进行有监督微调,以平衡模型的通用响应能力和领域特定能力。为了增强模型处理长文本的能力,将输入文本的最大长度设置为2048。同时,对所有训练实例进行排序以平衡GPU利用率和训练实例长度。本文介绍了一个基于LoRA的大型语言模型CFLLM-ins-7B,使用了无监督预训练和有监督微调的方法。在无监督预训练中,使用了LoRA和随机掩码的方法。在有监督微调中,使用了AdamW优化器和余弦衰减学习率调度器。最终模型在8个A800 80GB GPU上进行了微调。
应用
系统性的描述
本文介绍了CFAPP框架的工作流程和组件,包括任务分类器、任务特定控制模块、LLMs、输入解析器、历史记录器、内容摘要、因果推理、价格预测和风险管理等。其中,内容摘要和因果推理主要用于增强LLMs在金融领域的表达和推理能力,而价格预测和风险管理则更注重将任务特定模型与LLMs结合,以增强系统的决策能力。在接下来的章节中,将详细介绍每个功能的实现。
内容摘要。我们的系统支持多种输出格式,包括模板摘要、思维导图摘要和文本摘要。通过使用对话历史和用户输入,我们利用大型语言模型生成逐项摘要和响应类型。如果响应类型是“模板”,我们从模板库中检索相应的模板并将其与逐项摘要结合生成响应。如果响应类型是“思维导图”,我们直接使用逐项摘要生成思维导图。我们提供了不同的响应类型,包括原始文本、关键句子和段落摘要、图形和完整段落,以满足用户的不同需求和偏好。用户可以选择最适合他们需要和方便的格式来获取摘要。
因果推理。支持条件和开放领域问答。用户输入问题和ReAct格式提示,框架从向量数据库中检索相关文档作为支持证据。ReAct提示包括“[搜索]”和“[响应]”两种操作。对于条件问答,用户提供问题和条件,框架根据ReAct提示生成答案。该框架提供了一个全面的方法来回答复杂问题。
演示例子
本文介绍了两个框架的功能:内容摘要和因果推理,并展示了两个例子。
用户提供了贵州茅台公司的PDF文档,要求生成该公司的股权关系和高管架构的思维导图。我们的模型能够精确地生成这个要求。
用户询问是否可以帮助上传PDF文件。用户要求生成贵州茅台(600519)的前五大股东关系和高管组织架构图。用户上传了一份名为“贵州茅台股份有限公司2023年第一季度报告”的PDF文件。CFAPP将生成一个关于贵州茅台前五大股东关系和前六位高管组织架构的思维导图。
在第5个示例中,我们提出了一个开放领域的问题,并且我们的框架可以返回问题分解过程和答案作为响应,以展示我们的框架如何分析这个开放领域的问题,并与向量数据集进行交互以提供有证据的答案。
总结
本研究介绍了一个名为CFGPT的开源中文金融助手,它具备大规模语言模型,用于满足金融领域的应用需求。CFGPT包括一个部署框架,用于实际应用,一个在中文金融数据集上进行两阶段微调的开源语言模型,以及一个用于评估模型在中文金融领域性能的基准。通过初步评估,我们展示了CFLLM-ins-7B模型在金融任务中的有效性,强调了在金融领域进行领域特定的持续预训练和监督微调大规模语言模型的潜力。然而,仍然存在一些挑战,如提高复杂任务的性能和解决一些问题。我们的开源贡献旨在促进金融领域大型语言模型文献的进一步研究和创新,推动开发更有价值和适用性的金融领域大型语言模型。
灵度智能,我们致力于提供优质的AI服务,涵盖人工智能、数据分析、机器学习、深度学习、强化学习、计算机视觉、自然语言处理、语音处理等领域。提供AI课程、AI算法代做、论文复现、远程调试等服务。如有相关需求,请私信与我们联系。
我们的愿景通过创新创意和智能技术为客户提供卓越的解决方案,助力产业升级和数字化转型。我们的产品和服务将引领行业标准,创造卓越的用户体验。我们的团队致力于创造更智能、更便捷和更高效的生活方式,推动社会进步,致力于创造更美好的未来。
关注【灵度智能】公众号,获取更多AI资讯。